@DataProvider অ্যানোটেশন কি এবং এর প্রয়োজনীয়তা

TestNG এর মধ্যে টেস্ট ডেটা প্রোভাইডার - টেস্টএনজি (TestNG) - Java Technologies

380

@DataProvider অ্যানোটেশন কি?

TestNG-র @DataProvider অ্যানোটেশনটি ব্যবহার করে ডেটা-ড্রিভেন টেস্টিং (Data-driven Testing) কার্যকর করা হয়। এটি একটি টেস্ট মেথডে একাধিক ইনপুট ডেটা সরবরাহ করার সুবিধা দেয়। @DataProvider একটি মেথড চিহ্নিত করে, যা একটি টেস্ট মেথডের জন্য ডেটা প্রস্তুত করে।

মূল বৈশিষ্ট্য:

  • এটি Object[][] (দুই মাত্রার অবজেক্ট অ্যারে) রিটার্ন করে।
  • প্রতিটি সারি একটি টেস্ট মেথডের জন্য ইনপুট ডেটার সেট হিসেবে কাজ করে।
  • @DataProvider এর মাধ্যমে একই টেস্ট মেথডকে একাধিক ইনপুট সেট দিয়ে পুনরাবৃত্তি করে চালানো যায়।

@DataProvider এর প্রয়োজনীয়তা

১. ডেটা-ড্রিভেন টেস্টিং সহজ করা:
@DataProvider ব্যবহার করে টেস্ট কেসে বিভিন্ন ধরণের ইনপুট ডেটা প্রদান করা সহজ হয়।

২. রিডুস কোড রিপিটেশন:
একই ধরনের টেস্ট মেথডের জন্য বারবার আলাদা কোড লেখার পরিবর্তে একাধিক ইনপুট দিয়ে টেস্ট চালানো যায়।

৩. টেস্ট কভারেজ বৃদ্ধি:
একই টেস্ট মেথড দিয়ে বিভিন্ন ইনপুটের জন্য টেস্ট চালানো গেলে টেস্ট কভারেজ বৃদ্ধি পায়।

৪. ডায়নামিক ডেটা টেস্টিং:
পরিবর্তনশীল ডেটা সরবরাহের জন্য উপযোগী।


@DataProvider এর ব্যবহার

উদাহরণ: সহজ @DataProvider

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class DataProviderExample {

    @DataProvider(name = "loginData")
    public Object[][] dataProviderMethod() {
        return new Object[][] {
            {"admin", "admin123"},
            {"user1", "password1"},
            {"user2", "password2"}
        };
    }

    @Test(dataProvider = "loginData")
    public void testLogin(String username, String password) {
        System.out.println("Testing login with Username: " + username + " and Password: " + password);
    }
}

আউটপুট:

Testing login with Username: admin and Password: admin123  
Testing login with Username: user1 and Password: password1  
Testing login with Username: user2 and Password: password2

বিস্তারিত ব্যাখ্যা:

  • @DataProvider অ্যানোটেশন দিয়ে dataProviderMethod মেথডটি তৈরি করা হয়েছে। এটি একটি Object[][] ডেটা প্রদান করে।
  • @Test অ্যানোটেশনে dataProvider অ্যাট্রিবিউট ব্যবহার করে @DataProvider মেথডের নাম উল্লেখ করা হয়েছে।
  • একাধিক ইনপুট ডেটা দিয়ে testLogin মেথডটি বারবার চালানো হয়েছে।

উদাহরণ: @DataProvider এর মাধ্যমে গণনা টেস্টিং

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class CalculatorTest {

    @DataProvider(name = "numbers")
    public Object[][] dataProviderMethod() {
        return new Object[][] {
            {5, 3, 8},
            {10, 20, 30},
            {7, -2, 5}
        };
    }

    @Test(dataProvider = "numbers")
    public void testAddition(int num1, int num2, int expectedResult) {
        int actualResult = num1 + num2;
        System.out.println("Addition of " + num1 + " and " + num2 + " is: " + actualResult);
        assert actualResult == expectedResult : "Test Failed!";
    }
}

আউটপুট:

Addition of 5 and 3 is: 8  
Addition of 10 and 20 is: 30  
Addition of 7 and -2 is: 5

বিস্তারিত ব্যাখ্যা:

  • এখানে @DataProvider তিনটি ইনপুট সেট সরবরাহ করেছে।
  • testAddition মেথড প্রতিটি ইনপুট সেট দিয়ে আলাদাভাবে টেস্ট চালিয়েছে।

উদাহরণ: ডায়নামিক ডেটা প্রদান (Java Object থেকে)

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class DynamicDataProviderExample {

    @DataProvider(name = "dynamicData")
    public Object[][] provideData() {
        return new Object[][] {
            {"John", 25},
            {"Emma", 30},
            {"Oliver", 35}
        };
    }

    @Test(dataProvider = "dynamicData")
    public void testUserDetails(String name, int age) {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}

আউটপুট:

Name: John, Age: 25  
Name: Emma, Age: 30  
Name: Oliver, Age: 35

@DataProvider এর অ্যাডভান্স বৈশিষ্ট্য

১. একই @DataProvider ব্যবহার করে একাধিক টেস্ট চালানো

একটি @DataProvider মেথড ব্যবহার করে একাধিক টেস্ট মেথড পরিচালনা করা যায়।

২. Dynamic Data Generation:

@DataProvider এর সাহায্যে ডেটা ডাইনামিক্যালি তৈরি করা সম্ভব, যেমন ডাটাবেস বা ফাইল থেকে।


@DataProvider এর উপকারিতা

  • পরীক্ষার কার্যকারিতা বৃদ্ধি: একাধিক ইনপুট ব্যবহার করে একই টেস্ট মেথড পুনঃব্যবহার করা যায়।
  • মডুলার কোড: ডেটা এবং টেস্ট মেথড আলাদাভাবে সংজ্ঞায়িত করার সুযোগ।
  • সহজ ডিবাগিং: প্রতিটি ইনপুট সেটের জন্য পৃথক টেস্ট রান করে ডিবাগিং সহজ করে।

সংক্ষেপে

TestNG-র @DataProvider অ্যানোটেশন ডেটা-ড্রিভেন টেস্টিংয়ের একটি অত্যন্ত কার্যকর টুল। এটি একাধিক ইনপুট ডেটা দিয়ে টেস্ট সঞ্চালন সহজ করে এবং বড় মাপের অ্যাপ্লিকেশনে টেস্ট কভারেজ বাড়ায়।

Content added By
Promotion

Are you sure to start over?

Loading...